#include<bits/stdc++.h>
using namespace std;
long long n,p,ans,pt,tnn;
long long ct[100001];
long long cnt[100001];
long long un[100001];
struct xxyyzz
{
    long long on,nn,np;
    bool u,kl;
}nm[100001];
long long nn[100001];
long long np[100001];
bool k(long long p)
{
    long long tn=nm[p].on;
    if(nn[tn]==0)
        return false;
    if(np[tn]==0) 
        return false;
    for(long long i=np[tn];i<n;i++)
    {
        i+=cnt[nm[i].on];
        if(nm[i].on==0)
            break;
        if(!nm[i].u)
        {
            cnt[nm[i].on]++;
            nm[i].u=true;
            
            nm[i].kl=k(i);
            cout<<nm[i].on<<" "<<nm[p].on<<endl;
            return true;
        }
    }
    return false;
}
bool cmp(xxyyzz a,xxyyzz b)
{
    return a.on<b.on;
}
int main()
{
    freopen("duel.in","r",stdin);
    freopen("duel.out","w",stdout);
    cin>>n;
    for(long long i=0;i<n;i++)
    {
        cin>>nm[i].on;
        ct[nm[i].on]++;
    }
    sort(nm,nm+n,cmp);
    for(long long i=1;i<n;i++)
    {
        if(nm[i].on>nm[i-1].on)
        {    nn[nm[i-1].on]=nm[i].on,np[nm[i-1].on]=i;
            //cout<<nm[i-1].on<<" "<<i<<" "<< nm[i].on<<endl;
        }
    }
    for(long long i=0;i<n;i++)
    {
        nm[i].kl=k(i);
    }
    for(long long i=0;i<n;i++)
    {
        if(!nm[i].u)
            ans++;
    }
    cout<<ans;
    fclose(stdin);
    fclose(stdout);
    return 0;
}